<?php
//获取访问信息的类,在其他文件添加以下三行代码即可
//include "callInfo.php";
//$objCI=new callInfo($cfg_dbhost,$cfg_dbuser,$cfg_dbpwd,$cfg_dbname,$cfg_dbchar);
//$objCI->fw("测试访问");//写入到记事本
//$objCI->add_info($title,$url);//写入到数据库
class callInfo{
	public $db_host;
	public $db_user;
	public $db_pwd;
	public $db_name;
	public $db_char;
	
	//连接数据库参数
	function __construct($db_host,$db_user,$db_pwd,$db_name,$db_char){
		$this->db_host=$db_host;
		$this->db_user=$db_user;
		$this->db_pwd=$db_pwd;
		$this->db_name=$db_name;
		$this->db_char=$db_char;
	}
	
	function conn(){
		$link = mysqli_connect($this->db_host,$this->db_user,$this->db_pwd);
		mysqli_select_db($link,$this->db_name);
		mysqli_set_charset($link,$this->db_char);
		return $link;
	}
	function add($link,$tableName,$arr){
		$keys=array_keys($arr);
		$keys=join(",", $keys);
		$values=array_values($arr);
		$values="'".join("','",$values)."'";
		$sql="insert into $tableName ($keys) values ($values)";
		$re=mysqli_query($link,$sql);
		if($re>0){
			return TRUE;
		}else{
			return FALSE;
		}
	}
	function isWap(){
	    // 如果有HTTP_X_WAP_PROFILE则一定是移动设备
	    if (isset ($_SERVER['HTTP_X_WAP_PROFILE'])){
	        return true;
	    } 
	    // 如果via信息含有wap则一定是移动设备
	    if (isset ($_SERVER['HTTP_VIA'])){
	        // 找不到为flase,否则为true
	        return stristr($_SERVER['HTTP_VIA'], "wap") ? true : false;
	    } 
	    // 脑残法，判断手机发送的客户端标志,兼容性有待提高
	    if (isset ($_SERVER['HTTP_USER_AGENT'])){
	        $clientkeywords = array (
	        	'nokia','sony','ericsson','mot','samsung','htc','sgh','lg','sharp','sie-','philips','panasonic','alcatel',
	        	'lenovo','iphone','ipod','blackberry','meizu','android','netfront','symbian','ucweb','windowsce','palm',
	            'operamini','operamobi','openwave','nexusone','cldc','midp','wap','mobile'
	        ); 
	        // 从HTTP_USER_AGENT中查找手机浏览器的关键字
	        if (preg_match("/(" . implode('|', $clientkeywords) . ")/i", strtolower($_SERVER['HTTP_USER_AGENT']))){
	            return true;
	        } 
	    } 
	    // 协议法，因为有可能不准确，放到最后判断
	    if (isset ($_SERVER['HTTP_ACCEPT'])){
	        // 如果只支持wml并且不支持html那一定是移动设备
	        // 如果支持wml和html但是wml在html之前则是移动设备
	        if ((strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') !== false) && (strpos($_SERVER['HTTP_ACCEPT'], 'text/html') === false 
	        	|| (strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') < strpos($_SERVER['HTTP_ACCEPT'], 'text/html')))){
	            return true;
	        } 
	    } 
	    return false;
	}
	function ipGetAdd($ip){
		$url='http://api.map.baidu.com/location/ip?ip='.$ip.'&ak=sAKN48wH88ZpWkcotjAaLQBioutOW1ch&coor=bd09ll';
		$json=file_get_contents($url);
		$obj=json_decode($json);
		$status=$obj->status;
		if($status==0){
			$address= $obj->content->address;
		}else{
			$address='--';
		}
		return $address;
	}
	function fw($flname=''){
		$iswap = $this->isWap() ? '移动端' : 'PC端';
		$flname = $flname ? $flname : "--首次进入--";
		$t=date("Y-m-d H:i:s");
		$ip=$_SERVER['REMOTE_ADDR'];
		$address=$this->ipGetAdd($ip);
		$str=$t." / ".$ip." / ".$iswap." / ".$address." / ".$flname."\n";
		$handle = fopen("callInfo.txt", "a+");
		$w=fwrite($handle, $str);
		//var_dump($w);
		return $w;
	}
	function add_info($title,$url){
		$tname=$_SESSION['tname']?$_SESSION['tname']:'';
		$uname=$_SESSION['uname']?$_SESSION['uname']:'';
		$pwd=$_SESSION['pwd']?$_SESSION['pwd']:'';
		$iswap = $this->isWap() ? '1' : '0';
		$ip=$_SERVER['REMOTE_ADDR'];
		$address=$this->ipGetAdd($ip);
		$arr=array();
		$arr['tname']=$tname;
		$arr['uname']=$uname;
		$arr['pwd']=$pwd;
		$arr['ip']=$ip;
		$arr['pc_wap']=$iswap;
		$arr['address']=$address;
		$arr['title']=$title;
		$arr['url']=$url;
		$arr['calltime_int']=time();
		$link=$this->conn();
		$re=$this->add($link, 'callinfo', $arr);
		return $re;
	}
}
?>